<?php

/**
 * @author   Leen
 * @date     2016/04/21
 */
namespace App\Interfaces;

use Illuminate\Database\Eloquent\Collection;

interface CouponService
{


    /**
     * 根据要购买的商品获取用户已有优惠券中可使用的优惠券信息
     * @param int $user_id      用户id
     * @param array $goods      商品数组
     * @param array $not_available_use_coupon_id      排除掉的用户优惠券id
     * @return mixed  可用的优惠券
     */
    public function getCanUseCoupon($user_id, Collection $orderGoods, $buyGoods,$not_available_use_coupon_id='');

    /**
     * 使用优惠券
     * @param int $user_id      用户id
     * @param int $coupon_id    优惠券id
     * @return mixed  包含: 1.用户所有的收货地址
     */
    public function useCoupon($user_id, $coupon_id);

    /**
     * 获取用户的优惠券
     * @param  [type] $user_id [用户id]
     * @return [type] $user_id [优惠券类型：1：全场通用；2：商品；3：分类；4：店铺；5：品牌]
     */
    public function getUserCoupon($user_id, $type='');

    /**
     * 根据商品id获取用户可领取的优惠券
     *
     * @param  int $goods_id [商品id]
     * @return [type]        [description]
     */
    public function getCanReceiveCoupon($goods_id);

    /**
     * 根据优惠券id获取用户领取过该优惠券的数量
     *
     * @param  int $goods_id [优惠券id]
     * @return [type]        [description]
     */
    public function getUserCouponNumber($coupon_id, $user_id);

    /**
     * 根据优惠券id和用户id获取该优惠券的信息
     *
     * @param  int $goods_id [优惠券id]
     * @param  int $user_id  [用户id]
     * @return [type]        [description]
     */
    public function getUserCouponInfo($coupon_id, $user_id);




    /**
     * 用户领取优惠券
     *
     * @param  int $user_id [用户id]
     * @param  int $coupon_id [优惠券id]
     * @return [type]        [description]
     */
    public function receiveCoupon($user_id, $coupon_id);

    /**
     * 删除用户优惠券
     *
     * @param  int $user_id [用户id]
     * @param  int $coupon_id [优惠券id]
     * @return [type]        [description]
     */
    public function destroyMyCoupon($user_id, $coupon_id);

    /**
     * 根据条件获取用户优惠券数量
     *
     * @param  int $user_id [用户id]
     * @param  int $search  [查询条件数组]
     * @return [type]        [description]
     */
    //public function statisticsCount($user_id, $search);


    /**
     * 根据条件获取用户优惠券
     *
     * @param  int $user_id [用户id]
     * @param  int $coupon_status  [查询条件,默认：所有未删除的； can_use：未使用；used：已使用；expired：已失效；deleted：已删除]
     * @return [type]        [description]
     */
    public function getCouponByStatus($user_id, $stcoupon_statusatus=null);

}//end class CouponService